#pragma once

#include <compl.h>

/* 基本数据结构和算法 */

/* 插入查找修改删除O(1) */
#include <dinfra/radix.h>

/* 插入修改删除O(1), 查找O(n) */
#include <dinfra/list.h>

/* 插入修改删除O(1), 查找O(n) */
#include <dinfra/bitmap.h>

/* heap stack, 一个简单的线程本地分配器*/
#include <dinfra/hstack.h>

/* 查找插入修改删除O(logn) */
// #include <dinfra/rbtree.h>

/* 堆排序, O(logn) */
#include <dinfra/sort.h>

/* 一个全局的共享永久对象分配器（如锁节点等）， 不(经常)释放，让线程自己cache */
/* 要求申请快(无等待或无锁) 释放可以延迟(留时间清理) 碎片率低(凑满页) */
/* 相同类型的共享永久对象放在一个页中有助于减少TLBMISS，共享对象按cache行对齐 */
/* 方案一: 无等待， 缺点 碎片问题,reclaim问题 */
/* 使用faa保证申请是无等待的 */
/* 使用引用计数保证释放是无等待的 */

/* 方案二: 无锁，无碎片问题和reclaim问题，缺点是可能存在饥饿？但无所谓，只是线程创建时申请，线程结束时释放 */
/* 使用faa保证第一次申请是无等待的， */
/* 使用无锁管理释放对象的申请和无等待 */

/* 方案三: bitmap  缺点申请时间长必须扫描， 一次申请最少1个，最多64个对象*/
/* 申请是无锁的O(n) */
/* 释放是无等待的(faa进行bitmap修改) */
